Multi-user computer system

ABSTRACT

A system for connecting multiple users to multiple computers uses a switch for making and breaking connections between individual computers and input/output devices such as display screens, keyboards and pointing devices at user locations. A supervisory computer system includes one or more helper computers which run programs to aid the user in selecting connections to be made. The switch is arranged to capture preselected input sequences as designating commands, such as a command to connect the helper computer, and to forward these to the supervisory computer system. The supervisory computer system actuates the switch in response to these commands so that the user can establish communication with the helper computer.

CROSS REFERENCE TO RELATED APPLICATIONS

[0001] The present application claims benefit of U.S. provisional patentapplication No. 60/063,695 filed Oct. 28, 1997 the disclosure of whichis hereby incorporated by reference herein.

FIELD OF THE INVENTION

[0002] The present invention relates to computer systems, and moreparticularly relates to systems in which plural users can interface withplural computers.

BACKGROUND OF THE INVENTION

[0003] Various computer systems allow a user to employ a computer at aremote location. For example, some mainframe computer systems supportremote terminals connected to the mainframe computer by dedicated linesor by other communications links. As the computing power available insmall computers referred to as personal computers or “PCs” hasincreased, many applications previously performed on mainframe systemshas been transferred to PCs. In many cases, PCs are connected to oneanother, to larger computers or both through networks which allow thetransfer of information among the various computers. Thus, a user at anylocation can run programs on his or her own computer using files takenfrom other computers on the network, and also can run programs on othercomputers.

[0004] While this approach offers numerous advantages, it also suffersfrom certain disadvantages. Maintaining all of the individual computersat dispersed locations takes considerable time and effort. The dispersedcomputers and their components are vulnerable to theft and damage.Moreover, controlling software updates on all of the various computersand assuring that each individual computer has the appropriate softwarepresents a significant challenge. This challenge is especiallysignificant in environments such as software development laboratorieswhere the software to be used is changing continually. Moreover, therequirement that a computer be present in the immediate vicinity of theuser means that the user must put up with the noise and heat generatedby the computer and means that the computer will occupy some of thespace which would otherwise be available at the user's desk. This latterdrawback is especially annoying to users who must employ severalcomputers at once as, for example, some securities and commoditiestraders.

[0005] Various proposals have been advanced to alleviate these problems.For example, as disclosed in U.S. Pat. No. 5,721,842, input devices suchas a keyboard and mouse and output devices such as a display monitor andspeaker may be provided at numerous user locations. These devices areconnected to signal conditioning circuits or “pods”, which in turnconnect to a crosspoint switch. Numerous computers are also provided.The computers are connected through other “pods” to other terminals ofthe crosspoint switch. The crosspoint switch is arranged to connect anyof the pods associated with user locations to any of the pods associatedwith the computers, so that each user can be connected to any computer.These connections include both digital connections for passage of inputsignals such as keyboard and mouse data to the computer and analogconnections for video signals sent by the computer. Thus, the user canoperate the remote computer in much the same manner as a user having akeyboard, mouse and display screen directly linked to the computer. Inorder to allow the user to select different computers, the systemprovides a processor within each pod at each user location. Thisprocessor recognizes special command keystroke sequences entered by theuser, formats these commands and transmits the commands over separatecommand data lines to the crosspoint switch. The pod contains arudimentary program which actuates the monitor to display a menu of theavailable commands when the user enters the beginning of the commandsequence on the keyboard.

[0006] This approach suffers from several serious drawbacks. The podscan at most display rudimentary lists of commands. This offers little orno guidance to the user in selecting appropriate computers to connectwith for specific purposes. Moreover, it is difficult to control accessby specific users to specific computers. Further, the need for separatecommand channels extending through the user locations, as well as theneed for even rudimentary programmability and display generationcapabilities at the user locations significantly increase the cost andcomplexity of the system. Thus, despite significant efforts heretoforein the development of multi-user, multi-computer systems, there stillremains a considerable need for improvement in such systems.

SUMMARY OF THE INVENTION

[0007] The present invention addresses these needs. One aspect of thepresent invention includes a method of interfacing a plurality of servercomputers with input and output devices at a plurality of userlocations. A method according to this aspect of the invention includesthe step of conveying input signals from input devices such as keyboardswhich are included in sets of input and output (“I/O”) devices at userlocations to server computers associated with the user locations andconveying output signals from such server computers to output devicesas, for example, display monitors included in the sets at the userlocations. A method according to this aspect of the invention desirablyfurther includes the step of detecting one or more predetermined helpercodes in the input signals and connecting a helper computer to the setof input and output devices at the user location in response to thehelper code. Typically, the helper computer is connected to theparticular set of I/O devices which sent the helper code. The methodfurther includes the step of running a program in the helper computerwhich interacts with the set of I/O devices connected to the helpercomputer and allows the user at such set to select one or more of theserver computers for connection or disconnection. Additionally, themethod includes the step of actuating a switch to connect or disconnectserver computers as selected during operation of the interactive programfor the input and output devices at one or more of the user locations.Most commonly, the interactive program run by the helper computer willallow a user at a particular location connected to the helper computerto select one or more of the server computers for connection ordisconnection to that particular user location. Thus, a user can selectcomputers for connection to his own location. In a variant, the programon the helper computer can allow the user to select computers forconnection to other user locations.

[0008] Methods according to this aspect of the invention can greatlysimplify the task of the user. Thus, the program on the helper computercan take advantage of all of the techniques used by modern programmersto provide a user-friendly environment. For example, the helper computermay run the program in an environment such as a Windows® operatingsystem which provides a graphical user interface. The helper computerprogram can present information about the available servers in anydesirable manner as, for example, by presenting the servers organized ingroups according to the types of programs available on each server orother criteria which are meaningful to the user. Moreover, the helpercomputer can obtain this list of servers from a database at a centrallocation which can be maintained using conventional database managementtechniques.

[0009] The helper computer program desirably includes routines fordetermining user identities as, for example, password identificationutilities which require the user to enter an indication of his identitycoupled with a secret password associated with that identity. Thus, thedatabase may include information defining access rights for particularusers or groups of users and the helper computer program may controlaccess to servers according to the access rights set forth in thedatabase. These capabilities can be provided using conventionalprogramming techniques in the helper computer or another computerconnected to the helper computer, whereas they would be difficult orimpossible to provide without the use of the helper computer. Moreover,because only one or a few helper computers are required, and becausethese helper computers can be located at a centralized location alongwith the server computers and the switch, it is relatively easy tomaintain the helper computers and to assure physical security of theentire system.

[0010] Most preferably, each helper computer is connected into theswitch in much the same manner as a server computer, so that the switchcan connect each helper computer to any of the user locations. Theswitch itself desirably is controlled by a supervisory computer system.Typically, but not necessarily, the supervisory computer system includesa separate switch control in addition to the helper computer orcomputers. The switch control computer may be connected to the helpercomputer by a connection independent of the switch as, for example, alocal area network so that the helper computer can pass information todefine desired connections or disconnections to the switch controlcomputer. The helper computers can be managed dynamically as a resource,so that requests for use of the helper computers can be queued andpassed to the next available helper computer.

[0011] Desirably, the method further includes the step of detectingaction codes other than the helper codes in the input data supplied bythe user and actuating the switch to make or break connections betweenservers and sets of input and output devices at user locations inresponse to the action codes without using the interactive programrunning on the helper computer. For example, the switch control computercan be arranged to respond to the action codes independently of thehelper computer and can be arranged to recognize the helper codes andcan actuate the switch to connect the helper computer in response to thehelper codes. The use of the action codes minimizes the system overheadinvolved with simple tasks. For example, the system desirably maintainsa running set of servers associated with each user location. Thisrunning set includes a few particular servers which have been selectedthrough use of the interactive program on the helper computer. An actioncode may allow the user to move through this set one server at a timeand thus allow the user to “toggle” between servers of the running set.Thus, the helper computer is not involved where it is not needed.

[0012] The computers used to supervise operation of the system may bearranged to record information about usage of the various servers. Forexample, the system can record the identities of users who accessparticular servers and the times of such access. Moreover, the switchcontrol computer may be arranged to monitor faults in components of thesystem and to disable defective parts so as to preserve security of thesystem.

[0013] A further aspect of the present invention provides a system forinterfacing a plurality of server computers with output and inputdevices at a plurality of user locations. This system includes a switchselectively operable to connect the server computers with output andinput devices at user locations so that any one of the server computerscan be associated with a set of devices at user locations and so thatthe associated servers and devices are connected to another through theswitch. This allows users at the user location to interact with theassociated server computers. The system according to this aspect of theinvention also includes a supervisory computer system. The supervisorycomputer system is connected to the switch so that the supervisorycomputer system can control operation of the switch. In this aspect ofthe invention, the supervisory computer system desirably includes ahelper computer operative to run a program as discussed above, forselecting one or more of the server computers for association with a setof input and output devices at a user location. The switch isselectively operable to associate the helper computer with a set ofinput and output devices at a user location and connect the input andoutput devices to the associated helper computer. The system accordingto this aspect of the invention also includes code recognition devicesconnected to receive the input signals sent by the input devices. Thecode recognition devices are operative to detect one or morepredetermined helper codes in the input signals and to pass the helpercodes to the supervisory computer system. The supervisory computersystem is arranged to instruct the switch to connect the set of inputand output devices which sent the helper code to the helper computer.Thus, users at the user locations can selectively interact with thehelper computer to select server computers as discussed above inconnection with the method.

[0014] Apparatus according to a further aspect of the invention providesa system for connecting plural I/O devices at plural user locations toselected computers in a plurality of server computers. Apparatusaccording to this aspect of the invention includes a plurality of serverports adapted for connection to server computers and a plurality of userports adapted for connection to input devices, together with a switchfor selectively associating user ports and server ports so that inputdevice signals supplied to a user port by an input device connectedthereto can be conveyed to an associated server port and to a serverconnected to such server port. The apparatus further includes coderecognition devices associated with the user ports. The code recognitiondevices are operated to detect one or more command codes in inputsignals supplied to the user ports and to provide a code outputincluding code data representing such command codes and address datarepresenting the identity of the user port carrying the input signals inwhich the command code was detected. Most preferably, the coderecognition devices are disposed at a central location, such as withinthe switch itself. Thus, command codes may be sent along with the inputdata, in the same data stream, to the central location. There is no needfor a separate set of conductors to carry the command data. The commandcodes may include the helper codes and action codes as discussed abovein connection with other aspects of the invention, and the system mayalso include devices such as a supervisory computer system forcontrolling the switch in response to the command codes.

[0015] The ability of the system to operate without extra communicationlines to the user locations for interchange of the command codessimplifies construction of the system and allows installation at reducedcost.

[0016] The one or more code recognition devices desirably includes aplurality of user interface processors each connected to a subsetincluding one or more of the user ports. Most preferably, each userinterface processor is associated with only one user port. The systemmay further include at least one control processor and, for each controlprocessor, a control data channel connecting a set of the user interfaceprocessors with such control processor. This connection is arranged sothat each user interface processor can send code data representing acommand code to the control processor and so that the control processorcan identify the particular user interface processor which sent suchcommand code data. For example, each control processor can be connectedto the associated user interface processors through a time divisionmultiplex control data link, so that each user interface processor sendsany command codes in a predetermined timed slot of the multiplexedtransmission scheme. The control processor appends address data to eachcommand code based upon the identity of the user interface processor.Where there is more than one control processor, the control processormay assign part of the address data based on the identity of the controlprocessor itself. Thus, the address data accompanying each item of codedata representing a command code identifies the particular user portwhere the command code was detected. This allows the supervisorycomputer system or switch to act on the command data depending upon theidentity of the user port. For example, where the command data indicatesthat the user port which originated the command should be connected tothe helper computer, the supervisory computer system can establish theappropriate connection of the helper computer to the correct user port.

[0017] Yet a further aspect of the invention provides methods ofoperating a plurality of server computer from a plurality of userlocations which includes the steps of sending input data in a datastream along with command codes from input devices at user locations touser ports at one or more central locations where data from severalusers is concentrated. The method further includes the step of detectingcommand codes at the central locations, forwarding the command codes toa supervisory computer; forwarding the input data from the userlocations through a switch to one or more of the server computers; andactuating the switch in response to some or all of the command codes tochange connections between the server computers and the devices at theuser locations. Here again, because the command codes are detected atthe central location where data from several user location isconcentrated, there is no need for separate command data lines.

[0018] In a particularly preferred arrangement, the connections betweenthe central location or locations and the user locations can be madethrough eight conductors constituting three twisted pairs for red, greenand blue video signals, and another pair of conductors forbi-directional communication of input signals and command data from theinput devices at the user to the central location and reverse data as,for example, for controlling characteristics of the user interfacedevices. These eight conductors can be connected, for example, withstandard eight position connectors such as RJ45 telephone-typeconnectors and conventional wiring of the types used for computernetworks.

[0019] These and other objects, features and advantages of the inventionwill be more readily apparent from the detailed description set forthbelow, taken in conjunction with the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

[0020]FIG. 1 is a diagrammatic view depicting apparatus used in oneembodiment of the invention.

[0021]FIG. 2 is a further diagrammatic view illustrating certaincomponents of the apparatus depicted in FIG. 1.

[0022] Each of FIGS. 3, 4, 5, 6, 7 and 8 is a further diagrammatic viewillustrating additional components of the apparatus depicted in FIG. 1.

[0023]FIG. 9 is a representation of a screen display used in one programemployed in operation of the apparatus in FIGS. 1-8.

[0024]FIG. 10 is a diagrammatic view depicting a system in accordancewith a further embodiment of the invention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0025] A system in accordance with one embodiment of the inventionincludes a plurality of computers 20 referred to herein as servers.Although only a few server computers 20 are depicted in FIG. 1, itshould be appreciated that a typical system typically will include tensor even hundreds of server computers. Each computer 20 includes all ofthe internal components normally found in a personal computer as, forexample, central processing units, memory storage devices such as diskdrives and all of the components used for connecting these elements withone another. These internal elements of the server computer may be ofany conventional type. Also, some or all of these server computers mayinclude optional components such as data communications cards, modems,and the like for connecting the server computers or devices outside ofthe system. Each computer 20 includes a conventional VGA video outputconnection 22 (FIG. 3), keyboard connection 24 and mouse connection 26.The computer is arranged in the conventional manner to receive keyboardinputs through connection 24 and also to provide some keyboard controlsignals as, for example, signals which control the status of indicatorlights for caps lock, number lock and scroll lock lamps on the keyboard.Similarly, the computer is arranged to receive mouse inputs atconnection 26 and to send mouse control signals through the sameconnection. These connections are arranged in the conventional manner,normally used with standard keyboards and mice. The VGA outputconnection 22 is arranged to provide video output in the VGA formataccepted by conventional monitors. The VGA format includes separateanalog RGB (red, green, blue) color signals, each of 0.7 volts peak topeak with separate horizontal and vertical synchronization signals ondifferent signal lines. The synchronization signal polarity differsdepending on the screen resolution. In ordinary use of a personalcomputer, connections 22, 24 and 26 are connected to a monitor,keyboard, and mouse, respectively, in the immediate vicinity of thecomputer, typically within about a meter or less. The signals providedat these ports, and particularly the VGA video signal are not wellsuited to long distance transmission.

[0026] Each server computer 20 is connected to a device 28 referred toherein as a transmitter. Each transmitter is located in close proximityto the associated computer, typically within a meter of the computer.Transmitters 28 may be housed within the computers themselves or elsemay be housed in a separate chassis holding a few transmitters connectedto server computers in the immediate vicinity of such separate chassis.Transmitters 28 may be conventional devices used for adapting the VGAoutput from the computer to a format suitable for long-distancetransmission. Each transmitter is also arranged to adapt the keyboardand mouse connections 24 and 26 to send and receive data in a formatwhich is also suited for long-distance transmission. Devices of thisnature are well known in the art. One such device is commercialavailable under the trademark FreeDesk Transmitter from CCC Group, PLCof Farnbrough, Hants, United Kingdom and from CCC USA, Inc. of Melville,N.Y., USA. The FreeDesk Transmitter includes a video conditioningcircuit 30 and a set of three differential output amplifiers 32. Theseelements cooperate to convert each of the red, green and blue colorsignals in the incoming VGA signal into a pair of output signals havingopposite polarities. The pair of video signals representing each coloris provided at the output of one output amplifier 32. The videoconditioning circuit also serves to impress the horizontalsynchronization signal onto the pair of output signals representing thered video signal. A combined horizontal and vertical synchronizationsignal is applied on the pair of outputs representing the green videosignal, whereas a signal representing the polarity of the original VGAsynchronization signal is combined with the pair of signals representingthe blue video component. Transmitter 28 also includes a microprocessor32 connected to the keyboard and mouse connection 24 and 26 of thecomputer. The microprocessor is connected to an outgoing serial dataconnection 34 and incoming serial data connection 36 which provide aduplex serial data communication link. The microprocessor combinescontrol signals sent by the computer through the keyboard and mouseconnections 24 and 26 into an outgoing serial data stream provided onthis duplex link. The microprocessor is arranged to extract keyboard andmouse data from an incoming data stream on the same duplex link and toroute the incoming data to the keyboard and mouse ports 24 and 26.

[0027] The three pairs of analog color signals from amplifiers 32 andthe serial data connections 34 and 36 are connected at eight pinpositions in a standard RJ45 telephone-type jack, as shown in Table I.PIN USAGE 1 Red video − HS, 2 volts p-p 2 Red video + HS, 2 volts p-p 3Current serial multiplex send 4 Green video − CS, 2 volts p-p 5 Greenvideo + CS, 2 volts p-p 6 Current serial multiplex receive 7 Blue video− composite polarity, 2 volts p-p 8 Blue video + composite polarity, 2volts p-p

[0028] The system also includes a set of output devices, typicallymonitors 40 and input devices such as keyboards 42 and mice or otherpointing devices 44. These I/O devices are disposed at numerous userlocations 46. Although only a few user locations 46 are depicted in FIG.1, it should be appreciated that a typical system may include tens oreven hundreds of user locations. Typically, user locations 46 aredispersed as, for example, throughout a building. The set of input andoutput devices disposed at each user location is arranged in groups.Each group may be a full group, incorporating a single monitor 40, asingle keyboard 42 and a single mouse or other pointing device 44, orelse may be a partial group omitting one or more of these devices.Typically, at least one full group is provided at each user location.For example, user location 46A has only a single full group, whereasuser location 46B has a full group and three partial groups, each suchpartial group including only a monitor 40. Each group of input and/oroutput devices is associated with a protocol converter referred toherein as a receiver (RX) 48. Receiver 48 has an RJ45 jack 50 withconnections corresponding to the connections in the jack of thetransmitter. The receiver further includes differential input amplifiers54 connected to the pairs of inputs on jack 50. These input amplifiersare connected to a video conditioning circuit 56. The video conditioningcircuit is arranged to reverse the transformation provided by the videoconditioning circuit 30 of the transmitter and to provide a standard VGAoutput signal at an output connection 58. Receiver 48 further includesmicroprocessor 60 connected to a keyboard input jack 62 and a mouseinput jack 64. The microprocessor is also connected to two pins 66 and68 which serve as the serial input and serial output respectively of thereceiver. The microprocessor is arranged to accept keyboard input datafrom a standard keyboard 42 and mouse input data such as movement andbutton click data from a standard mouse 44 and to provide such data in aserial format on the duplex communication link provided by connections66 and 68. The microprocessor is also arranged to accept keyboard andmouse control data on the duplex communication link and send suchcontrol data to keyboard 42 and mouse 44. The features of the receiver48 may be identical to those used in the well known and commerciallyavailable FreeDesk (trademark) Receiver. In the well-known FreeDesksystem, a jack 38 of a particular computer can be connected to the jack50 of a receiver 48 using wiring having four twisted pairs as, forexample, high-grade wiring of the type commonly referred to category 5568B cable extending over tens or of meters, typically up to about 200meters. When the transmitter and receiver are connected in this manner,the user can operate the computer using the group of I/O devicesconnected to the receiver 48. Operation of the FreeDesk system istransparent to the user; the user can interact with the computer insubstantially the same way as he or she could interact with a computerat his or her location connected directly to the keyboard, mouse andmonitor. The same type of connection can be used to provide a part ofthe interface. For example, where the output of a computer is to bedisplayed at the users location, but input from the user at thatlocation is not desired, a monitor can be connected to the VGA output ofthe receiver 48, whereas the keyboard 42 and mouse 44 may be omitted.The system further includes a switch 70 (FIGS. 1 and 2) in addition tothe FreeDesk transmitters and receivers. Switch 70 includes a set ofserver interface chassis 72 and a set of user interface chassis 74. Hereagain, only a few of these components are shown in the drawings forclarity of illustration; typically, a large number of server interfacechassis and a large number of user interface chassis are provided. Eachserver interface chassis 72 includes a backplane 76 with a 64-channelvideo bus 76 a providing connections for 64 red, green and blue videosignals, i.e., 192 individual color signals arranged in triplets. Eachbackplane 76 also includes a data bus 76 b with connections for fourbi-directional time division multiplexed (“TDM”) data channels. Thesedata channels are operated with sixteen time slots per channel in eachdirection, and hence the data bus can accommodate 64 bi-directional datachannels. The backplane further includes a control data serial bus 76 c.The backplane further includes power lines (not shown) for powering thevarious cards held by chassis 72, as well as slot address pins (notshown) which interact with each card in the chassis, to designate aunique card address for each card.

[0029] Each server interface chassis 72 has up to four server interfacecards 78 mounted therein. Each server interface card is arranged toaccept and send control signals and status information on control bus 76c through a control data connection 90. Each of the server interfacecards includes sixteen RJ45 type jacks or server input ports 80, ofwhich only one is shown in FIG. 5. In use server input ports 80 areconnected to the output connectors 38 of transmitters 28 (FIG. 1). Eachof the server input ports 80 is connected to a server port interfacecircuit 82, which includes a microprocessor and video conditioningcircuitry. Each server port 80, and the associated circuit 82 have aunique address within the chassis 72. Thus, the ports on the first card78 are at intra-chassis server port addresses 1-16; those on the secondcard are at addresses 17-32, and so on. The video conditioning circuitis adapted to convert each of the differential analog color signal pairs(red, green and blue) to a corresponding single signal, and tocompensate for line losses and delays in the analog circuitry conveyingthe signal to the port. The microprocessor included in each server portinterface circuit 82 is arranged to convert between serial and TDM dataformats. The analog video signals of all sixteen interface circuits 82are connected through a buffer and selective enabling circuit 83 to asixteen channel RGB video backplane connector 84, which in turn isconnected to sixteen of the video channels 76 a of the backplane.Circuit 83 is also arranged to enable or disable video transmission fromeach port 80 to the connector 84 in response to control signalsaddressed to that circuit from a control processor 87. Control processor87 in turn is connected to the control bus of the backplane through thecontrol data connection 90 of the server interface card. As furtherdiscussed below, other components selectively make or break videoconnections with the video channels 76 a of the backplane so as toconnect the video from individual servers to the desired users. Thevideo connection from each port 80 to the connector 84 and hence to thebackplane video channels 76 a could remain enabled at all times.However, the connection to the backplane of those video channels whichare not connected to any user is disabled so as to save power and reducenoise on the backplane.

[0030] The server interface card 78 further includes a multiplex circuit86. The multiplex circuit is connected to the processor in each of theinterface circuits 82. The processor in each of the interface circuits82 captures serial data transmitted into the port 80 and sends the sameto multiplex circuit 86. The multiplex circuit is arranged to send thedata captured from the various serial signals passing through theinterface circuits in time division multiplex format, in a singlebi-directional TDM channel with 16 bi-directional TDM slots, throughconnection 88, such that the data from each server port 80 is sent in aparticular time slot of the TDM transmission scheme. Similarly, the timedivision multiplex circuit 86 is arranged to accept time divisionmultiplex data on connection 88 and to send data in a particular timeslot of the TDM transmission scheme to a particular interface circuit 82and server port 80 associated with that particular time slot.

[0031] The server interface card 78 is connected to the backplane 76 ofa server interface chassis 72 so that the sixteen channel videoconnector 84 of each card 78 is connected to sixteen of the sixty-fourvideo channels on the backplane. Thus, each port 80 is coupled to thevideo channel corresponding to the intra-chassis address of that port.Also, the TDM data connection 88 of each card 78 is connected into oneof the four TDM data channels of the backplane so that the serial dataconnections of each server port 80 are connected to the correspondingTDM slot on the backplane. For example, the port with intra-chassisaddress 17 is coupled to that 17th video channel of bus 76D and to the17th TDM slot of TDM data channels 76 b.

[0032] Each server interface card 78 further includes an expansionconnection 92. The expansion connection carries buffered replicates ofthe incoming video signals and also carries a TDM data channel includingthe 16 bi-directional TDM slots as carried by data connection 88. Asdiscussed below, the expansion connection can be used to connectadditional server interface chassis into the system. The video signalsto expansion connection 92 are always enabled.

[0033] Each server interface chassis 72 also includes up to 16 matrixcards 94. Each matrix card 94 includes an analog switching circuit 96; adigital switching circuit 98 and a controller 100. Controller 100 mayinclude one or more microprocessors connected through a control port 102to receive control signals on the control bus 76 c of backplane 76. Eachmatrix card 94 includes a 32 channel video input connector 104 and a 32channel video output connector 106. These connectors are arranged tohandle 32 channels of RGB video signals. The matrix card furtherincludes a 64 channel video backplane connector 108 adapted to connectthe 64 channel RGB video bus 76 a of the backplane with the analogswitching circuit 96. Appropriate buffer amplifiers (not shown) are alsoassociated with the input connectors 108 and 104 and with the outputconnector 106. The matrix card 94 further includes a four channel TDMbackplane connection 110 adapted to mate with the data TDM 76 b of thebackplane in the server chassis 72; a dual 16 slot TDM input connection112 providing 32 TDM data slots in all; and a similar, dual 16 slotoutput connection 114. The TDM connections 110, 112 and 114 are linkedto digital crosspoint controller 98.

[0034] The analog switching circuit 96 may include a set of crosspointswitching devices such as twenty-four AD8116 16×16 Crosspoint VideoSwitches having inputs connected to backplane connector 108 and havingoutputs connected to the channels of output connector 106, together withadditional switches for selectively connecting each channel of inputconnector 104 to the corresponding channel of output connector 106. Asfurther discussed below, the analog switching circuit 96 can connect anyof the 32 output video channels on output connector 106 with any of the64 video channels from the backplane at connector 108, or with any ofthe thirty-two video channels from the video input connector 104.Similarly, the digital switching circuit includes a set of switchingdevices which may incorporate a pair of I-Cube 96 Way Keyboard and MouseSwitches connected to TDM backplane connection 110 and to the TDM outputconnection 116. Circuit 98 can associate any of the 32 bi-directionalslots provided by the two outgoing TDM channels at output 114 with anyof the sixty-four TDM slots available on the backplane or with any ofthe thirty-two TDM slots available at the input connection 112.

[0035] Each server interface chassis 72 also includes a controller card120. Each controller card includes two identical halves 122. Each halfof the controller card incorporates a controller 124, desirably an 80×86microprocessor such as an 80186 microprocessor of the type availablefrom the Intel Corporation. The two microprocessors 124 are connected toone another so that each can monitor the status of the other. When poweris first applied to the controller card, the two microprocessors competefor control of the system; the first one of the two microprocessorswhich completes its power-on sequence wins control. The half 112 of thecard having the winning microprocessor 124 remains active, whereas theother half remains inactive but continues to perform a check on thefirst half. However, upon a failure or fault condition, in the activehalf of the card, the inactive half takes over, and the other halfenters the fault-checking mode.

[0036] Each half of the card includes a clock or timing circuit 126arranged to produce clock and framing signals as needed for timedivision multiplex communications. Timing circuits 126 are connected totiming ports 127. Each half of the card also includes appropriatecommunications interfaces (not shown) adapted to connect themicroprocessor or controller 124 with the control data bus 76C (FIG. 2)of the backplane through a control data port 125. Each half alsoincludes a keystroke TDM data port 128 and appropriate interface devices(not shown) for routing TDM data received at port 128 to themicroprocessor 124. The keystroke TDM data port is not used in thosecontrol cards which are installed in server interface chassis. Each halfof the card also includes an external communications interface or serialinterface 130 connected to an RS422 serial data port 132 and an RS232standard serial data port 134. As further discussed below, thecontroller card associated with each server interface chassis 72 isarranged to receive command signals from a switch control computerthrough the RS422 serial port and is further adapted to interpret thesecommands and use the interpreted commands to control the serverinterface cards and matrix cards in the chassis.

[0037] Each user interface chassis 74 includes a backplane 140 havingpower connectors (not shown), a control bus 143 and a 16-slot TDMchannel 145 referred to as the keystroke TDM channel. (FIG. 2). Eachbackplane 140 also provides slot address pins (not shown) for providingthe various cards inserted in the backplane with hard-coded slotaddresses. Each user interface chassis is provided with a control card142 identical to the control cards 120 discussed above with reference tothe server interface chassis. The control data port 125 of the controlcard is connected to the control data bus 143 of the backplane, whereasthe keystroke data port 128 of the control card is connected to thekeystroke data bus 145.

[0038] Each user interface chassis also accommodates up to twenty userinterface cards 144. Each user interface card 144 incorporates sixteenchannel circuits 146, of which only two are shown in FIG. 8 for clarityof illustration. Each channel circuit includes video conditioningcircuitry 148 and output amplifiers 150. The video conditioningcircuitry is arranged to accept RGB video in the format provided bymatrix cards 94 and to realign the red, green and blue components withone another based upon the synchronization signals in these components.The video conditioning circuit is also arranged to adjust the gains ofthese various components based upon the size of the sync pulses in thevarious components. Thus, the video conditioning circuit restores thetiming and relative intensities of the red, green and blue signals,thereby compensating for any differences in signal propagation times andamplitude gain in other components of the switching system. The videoconditioning circuit and amplifiers 150 provide the outgoing videosignal as a set of three opposite polarity signal pairs on terminals ofa user port 157 having the same pin assignments as indicated in Table I,above. Each channel 146 also includes a microprocessor connected tobuffer amplifiers 154 to a serial send terminal 156 and a serial receiveterminal 158 of user port 157. The microprocessor 152 of each channeldesirably is a PIC model 16C622, made by Microchip Technology, ofChandler, Arizona.

[0039] The processors 152 of the various channels 146 are connected to atime division multiplex interface 160. Interface 160 is arranged toreceive a sixteen channel time division multiplex data stream from oneof the matrix cards 94 and to divert signals in each of the sixteenchannels to a particular processor 152 in a particular data channel 146associated with that slot. Interface 160 is also arranged to accept datafrom the processor 152 of each channel and send that data in theappropriate slot of the time division multiplex transmission scheme.

[0040] The user interface card includes a further time divisionmultiplex interface 162 having a connection 164 that mates with thecontrol lines 143 of the user interface chassis 74 (FIG. 2). Theprocessor 152 of each channel 146 is arranged to examine data arrivingon serial input 158, and to recognize preselected command codesappearing in that data. Preferably, processor 152 is arranged torecognize a predetermined attention sequence such as the key press codefor alt-break and to treat a preselected number of characters followingthe attention sequence as a command data. For example, the processor maybe arranged to treat the key press appearing immediately after theattention sequence as the command data. Each processor 153 is arrangedto strip the command code (attention sequence and command data) out ofthe data before forwarding the data to TDM interface 160. Each processor152 diverts the command data to interface 162. As discussed in greaterdetail below, the data arriving at each processor 152 on the serialinput line 158 is raw scan code data encoded by the keyboard itself.Keyboard scan codes for standard keyboards are widely known in the artand are available in standard keyboard technical reference manuals. Forexample, using a PS/2 keyboard, each key press generates a particularkeyboard scan code when the key is pressed down and generates the samescan code preceded by a delimiter byte (0XF0) when the key is released.Thus, the processor 152 of each channel is arranged to recognize the keypress sequence corresponding to Alt-break as an attention sequence, andto divert a preselected number of key press sequences following theattention sequence to TDM interface 162.

[0041] Each channel 146 and each port 157 has a unique address withinthe chassis. The TDM interface is arranged to send the raw keystrokedata diverted by each processor 152 as command data in a TDM slotcorresponding to the intra-chassis address of the channel 146 where thedata was captured, i.e., the intra-channel address of the processor 152and user port 157 where the command code was captured.

[0042] The various server interface chassis 72 and user interfacechassis 74 are interconnected with one another as shown in FIGS. 1 and2. The timing devices of the various control cards on the serverinterface chassis and user interface chassis are interconnected with oneanother by timing patch cords 160. As noted above, the various controlcards have two halves with one clock in each half. The interconnectionsbetween the various control cards connect one clock on each card in oneset of clocks (“clock A”) and another clock on each card in a separateset (“clock B”). Within each set, one clock is set by internal jumpersto be a master and the other clocks are slaved to this master. The cardsall use one clock set and ignore the other unless the first set fails.The clock signals are used to provide synchronization of the varioustime division multiplex signals on the various chassis. Stated anotherway, all of the transmission and reception times associated with thevarious time slots in the various time division multiplexing schemes areset with reference to a common clock, so that TDM signals sent by acircuit on one chassis can be received and understood by circuits onanother chassis. The RS422 serial communication ports of the controlcards 120 in the server interface chassis 72 are connected to oneanother so as to provide a common server interface serial link 172. TheRS422 serial ports of each control card 142 in each user interfacechassis 74 are connected as a separate user interface serial line 174.The control card 120 in each server interface chassis is programmed witha designation indicating that the card is part of a server interfacechassis rather than part of a user interface chassis, and with a chassisaddress designating the particular server interface chassis. Likewise,the control card 142 of each user interface chassis 74 is programmedwith a designation indicating that the card is incorporated in a userinterface chassis and with a user interface chassis address number. Thematrix cards 94 in the various server interface chassis are connected toone another patch cords so as to form columns of matrix cards extendingacross all of the server interface chassis. For example, matrix 94A and94B form one such column whereas cards 94C and 94D form another column.Within each vertically extensive column, the video input 104 of eachmatrix card is connected to the video output 106 of the next higher cardin the column. Likewise, the bi-directional TDM channel inputs 112 ofeach matrix card in the column is connected to the TDM output 114 of thenext higher matrix card in the column. The interconnections between thecards in the column thus provide thirty-two user video channelsextending vertically across all of the server interface chassis and 32user slots of bi-directional TDM communication (two channels, each 16slots) also extending across all of the server interface chassis. Eachof the matrix cards can configure any particular user video channel ordata slot either as a feed through from the input 104 of that matrixcard, in which case the channel will connected to the next higher matrixcard in the column. Alternatively, each matrix card can connect aparticular video channel to a video channel on the backplane of thatparticular chassis. Thus, any of the thirty-two user video channelsprovided by each column of matrix cards can be connected to any of thevideo channels 76 a on the backplane of any of server interface chassis72. In the same manner, any of the user TDM slots can be connected toany of the TDM slots 76 b provided on the backplane of any serverinterface chassis. The user video channels and user TDM slots defined bythe columns of matrix cards are arranged in order. Thus, the firstcolumn of matrix cards defines user video channels 1-32 and user TDMslots 1-32; the second column defines video channels 33-64 and user TDMslots 33-64 and so on.

[0043] At the bottom of each column, the thirty-two user video channelsand thirty-two user TDM slots are split into two paths, each includingsixteen user video channels and sixteen bi-directional user TDM slots.Each path is connected to one user interface card 144. Each of thesixteen user video channels is connected to the video input of onechannel 146 on the user interface card and hence is connected to thevideo output of one user port 157. Also, the sixteen user TDM slots areinterfaced through the TDM processor 160 of the user interface card sothat each such user TDM slot is connected to the serial inputs andoutputs of a particular user interface port. Thus, each of thethirty-two user video channels and thirty-two TDM slots defined by avertically extensive column of matrix cards is connected to a singleuser port. As discussed above, each of the user ports 157 has anintra-chassis address. Each user port also has an overall address Thus,a user port 157 having intra-chassis address IUA in the i^(th) userchassis has overall user address OUA=IUA+(Q×(i−1)), where Q is thenumber of user ports per user interface chassis, i.e., the highestintra-chassis address for a fully-configured chassis. In the systemdepicted in the drawings, which includes up to 20 user interface cards,each with 16 user ports, in each user interface chassis, Q=320. Each ofthe user video channels and user TDM slots is connected to the outputport having an overall address corresponding to the channel number andslot number, i.e., the n^(th) video channel and n^(th) user TDM slot areconnected to the user port having overall address OUA=n.

[0044] Similarly, each of the server ports 80 has an overall server portaddress OSA based on the intra-chassis server port address ISA. That is,for a server port in the i^(th) server interface chassis,OSA=ISA+(Z×(i−1)) where Z is the maximum number of server interfaceports per server interface chassis. For example, in the system shown inthe drawings, each server interface chassis can accommodate up to 64server interface ports, and hence Z=64. A server port 80 havingintra-chassis address 10 in the second of the interface chassis hasoverall address 10+(64×(2−1)) or 74. As discussed in greater detailbelow, the matrix cards can connect the serial data connections 156 and158 of any user port 157 to the serial data connections of any serverinput port 80 on any of the server interface chassis. Similarly, thematrix cards can connect the video outputs in any user output port 157to the video inputs of any server port 80. Such a connection can bespecified completely simply by designating whether the connection is tobe a video connection or a data connection, and by designating theoverall addresses of the server port and user port which are to beconnected.

[0045] The system further includes a supervisory computer system whichincludes a switch control computer 200; one or more helper computers 202and one or more administration computers 204. The helper computers 202and administration computers 204 most preferably are separate computers,distinct from the switch control computer 200. The helper computers,administration computers and switch control computers are interconnectedto one another in a local area network 206 separate from the switch 70.Desirably, the various computers run under an operating system which isreadily integrated with a local area network such as Microsoft® WindowsNT Server, version 4.0 or higher. All the various computers desirablyare part of a single Windows NT domain. Each helper computer 202 is alsoconnected to a server input port 80 of switch 70 through a transmitter28 in exactly the same way as server computers 20. The switch controlcomputer is equipped with a server control serial interface 208connected to the server interface chassis serial line 172. The switchcontrol computer 200 is also provided with individual serial interfaces210 connected to the individual serial communications lines 174associated with the control cards of user interface chassis 74. Asfurther discussed below, the switch control computer 200 acts as theserver in LAN 206. For that reason, the switch control computer issometimes referred to as a “switch server”. A database 212 is alsoprovided on local area network 206. Because database 212 is utilized bythe switch control computer or switch server 200, the database isdepicted in FIG. 1 as physically associated with the switch controlcomputer. However, the database may be maintained either on the switchcontrol computer itself or on another computer connected to LAN 206. Thedatabase may be maintained using a standard database administrationprogram such as Microsoft® SQL Server, version 6.5. The switch controlcomputer or “switch server” also runs a main program which performs thevarious operations discussed below. This program consists of variousmodules each of which are responsible for their own tasks. For instance,one module listens on the communications ports 210 connected to the userinterface cards. The program uses multi-threading; one thread ismaintained for each user location. When an incoming command from a userlocation is detected, it is handed to the relevant thread whichrepresents each user location. The work area thread then calls thefunctions corresponding to the required action. Each thread can alsorequest resources such as a Helper PC or an open database connectivityor “ODBC” link to the database and these are managed by other modulessuch as the Helper PC manager and ODBC manager which will allocate andde-allocate the required resources as necessary.

[0046] The database includes data defining identities for particularservers 20 and helper computers 202 connected to the system as, forexample, names for such servers and helper computers. The database alsoincludes data defining associations between particular servers andhelper computers and particular server ports 80 on the server interfacechassis. The database further includes information about particular userlocations or work areas 46, such as the number of receivers 48 at eachsuch location; whether the group of I/O devices associated with eachsuch receiver includes input devices such as keyboard 42 and mouse 44;output devices such display monitors 40; or both and a user port addressfor each receiver.

[0047] The database desirably further includes information about eachauthorized user of the system such as a user name; a password and datadefining access rights to particular servers 20 for each user. This datamay be provided as an individual list of particular servers authorizedfor each user. Alternatively or additionally, each user may be definedas belonging to one or more user groups, whereas each server may bedefined as belonging to one or more server groups, and rights may beallocated on a group-wide basis. The database may also include atemporary list defining a running set of servers for each user location.

[0048] In operation, when the system is started, all of the I/O devicesat user locations 46 are initially disconnected from the servercomputers 20 and from helper computer 202. A user at a particularlocation as, for example, at location 46A may enter a startup helpercode (alt-break followed by enter). This code is passed through theserial output 68 (FIG. 4) of the receiver 48 associated with the user'skeyboard and is passed into the serial input 158 of the particular userport 157 connected to that receiver 48. The processor 152 associatedwith that port 157 (FIG. 8) responds to the attention sequence (altbreak) by trapping the next key stroke indication (enter) and forwardingthat keystroke indication to the command TDM module 162. The TDM modulesends the command data indicating depression of the enter key in aparticular slot of the TDM transmission from the particular cardassociated with intra-chassis address of that channel. Thus, if theprocessor which trapped the helper code was the processor for the has anintrachassis address IUA, the, the signal sent along the keystroke bus145 to the control card 142 (FIG. 2) of the user interface chassis willappear in a transmission uniquely identified with intra-chassis addressIUA. The processor 124 of the control card 142 adds the intra-chassisaddress within the chassis to the starting address of the chassis tocompute the overall user port address OUA. The controller formulates amessage including the overall user port address and the particular keystroke included in the data (in this case, the enter key) and transmitsthat message along the serial communications link 174 to one of theserial interfaces 210 of switch control computer 200. Communicationsbetween the control cards and the serial ports of switch controlcomputer use an ANSI X3.28 compliant packet communications protocol. Asis well known in the art, communications of this nature include featuressuch as message acknowledgment and, in some cases, a check sum for errorcorrection, so as to provide a robust communications link with goodassurance that errors in communication will be detected. The switchcontrol computer 200 interprets the message conveying the overall userport address together with a enter key stroke value as a request toconnect the input devices (keyboard and mouse) and output device(monitor) associated with that user port to a helper computer in asign-on mode. The switch control computer checks the database for helpercomputers, finds a helper computer which is not currently occupied, andfinds the server port address for that helper computer.

[0049] The switch control computer then broadcasts a signal on theserver interface chassis serial control line 172 through communicationsport 208, again using the ANSI X3.28 protocol. The command includes avideo connect signal including a code predesignated as meaning “Connectvideo” together with two integers (X and Y), so that the overall commandhas the meaning “CONNECT VIDEO X Y” where X is the overall server portaddress of the helper computer and Y is the overall user port addresswhich sent the helper command. The computer also sends a command of themeaning “CONNECT KEY X Y” where X and Y have the same meanings. Thecontrol cards 120 of the various serial interface chassis 72 all receivethese commands. Each controller will compare the server port addresswithin each command to the range of overall server port addressesincluded in that server interface chassis. The controller card in aserver interface chassis having a range of overall server port addressesincluding X will acknowledge the command, whereas the other controllercards will ignore it. The controller card which acknowledges a CONNECTVIDEO command converts the overall server port address to anintra-chassis server port address based on the starting port address ofthe chassis. For example, the second server interface chassis startswith overall server port address 65. Therefore, if the overall serverport address “70” is indicated by the X value in a CONNECT VIDEOcommand, the control card in the second server interface chassis willrespond to the command and will select the sixth server port 80 of thatchassis. Thus, the control card will select the sixth of the 64 videochannels on the backplane of the chassis and will actuate the sixth ofthe 64 video server interface circuits 82 to route video from its portunto the video channel of the backplane. The control card will alsoselect the particular matrix card encompassing the user video channelcorresponding to the user port address designated by the value of Y inthe command. The control card will send a message to the matrix cardincluding that user video channel instructing it to connect theparticular user channel or slot to the particular video channel on thebackplane. For example, in response to the response to the command“CONNECT VIDEO 70 35”, the control card associated with the secondserver interface chassis will cause the second matrix card to connectthe third one of its video outputs (the video output associated with the35th user video channel) onto the sixth video channel of the backplanein the server interface chassis (the video channel associated withoverall server port address “70”). The matrix cards maintain continuitybetween video inputs 104 and video outputs 106 in the absence ofspecific instructions. Thus, the video coupled onto any user videochannel or slot at a particular server interface chassis is transmittedthrough the matrix cards disposed beneath it on other server interfacechassis. Video coupled onto a user video channel is transmitted down thechannel to the particular channel 146 of the user interface card and toa particular user port 157 associated with the user video channel. Thus,the video from a particular server port X is coupled to the video outputof a particular user port Y. In a directly analogous manner, the controlcards 120 and the matrix cards respond to the command “CONNECT KEY X Y”by connecting a particular time division multiplex slot in a backplanedata channel 76B associated with a particular server port 80 designatedby the server port address X with the serial input and outputconnections 156 and 158 of the particular user port designated by theuser port address Y.

[0050] As pointed out above, the message sent by the control card of theuser interface chassis 74 to switch control computer 200 tells theswitch control computer which user port originated the helper command.The switch control computer uses that port as the user port address inthe CONNECT VIDEO and CONNECT KEY commands and thus connects the helpercomputer to the user port which originated the helper command. Theswitch control computer 200 also sends a message over the LAN to thehelper computer advising the helper computer of the identity of the userport, and advising the helper computer that the user at such port wishesto connect to the helper computer in the sign-on mode.

[0051] At this point, the user is connected to the helper PC 202 througha receiver 48; through a user port 157 and switch 70 to a server port 80associated with the helper PC 202 and through the transmitter 28associated with the helper PC. The monitor 40 at the user's locationshows output from the helper PC, whereas the keyboard and mouse areconnected to the keyboard and mouse connections of the helper PC, sothat the user can interchange data with the helper PC in exactly thesame manner as if the monitor, keyboard and mouse were directlyconnected to the corresponding connections of the helper PC 202.

[0052] In the sign-on mode, the helper computer enters an initial accessroutine in which it generates a screen display calling for the user toenter his or her user ID and password.

[0053] Upon authentication of the user's identity and password, thehelper PC accesses the database to obtain the list of servers authorizedfor access by that user. The helper PC also and also accessesinformation in the database setting forth a correlation between userport addresses and user locations to find the configuration of the inputand output devices at the user's particular location, and the user portaddresses associated with various groups of devices. The helper PCdisplays a list of authorized servers and the input output devices. Thehelper PC accepts input from the user defining particular servers to beconnected to particular I/O devices. One example of a display which maybe generated by the helper PC is shown in FIG. 9. The list of servers ispresented under the heading “Server Neighborhood”. This list includesonly those servers which are authorized for access by the particularuser. Note that the servers are identified by names rather than by portnumber. Also, only those servers authorized for access by the particularuser are displayed. Where the servers are arranged in groups, thedisplay of available servers may also be grouped. Also, the availablegroups of input and output devices at the user location are displayedunder the heading “Work Area”. Here again, the available I/O devices aredesignated on the display by names which are intelligible to the user,rather than by user port numbers associated with the devices. Each groupof input and output devices at the user's location is shown by aseparate designation such as “screen 1”, “screen 2”, etc. Each suchgroup has one receiver 48 and is associated with one user port 157 ofswitch 70. The user can designate one or more of the available serversfor association each such complement of devices. For example, as shownin FIG. 9, servers HPC2 and R2D2 have been designated for associationwith one group of devices (“Screen 1”) whereas servers HPC1 andNOSTROMON have been designated for association with another group ofdevices (“Screen 2”) and so on. The helper PC program thus establishes arunning set of servers associated with the user's location. Within suchrunning set, there may be none, one or more than one server associatedwith a particular group of I/O devices and hence with a particular userport. If there is more than one server associated with a particulargroup of I/O devices (e.g., Screen 1), the server at the top of list forthat group (HPC2 in FIG. 9) is active, whereas all other servers areinactive. Also, the connection to any port may be designated either asview-only, where only the video output is connected to the userlocation, or as bi-directional, with connections for video output anduser input (keyboard and mouse). A choice between view-only andbi-directional connection may be made by the user. Also, the table ofrights stored in the database may give the particular user only theright to establish a view-only connection to a particular server and notthe right to establish a bi-directional connection.

[0054] Once the user has input a running list of servers, the userinputs a command to the helper PC to implement the connection. Helper PC202 communicates this command through LAN 206 to switch control computer200 and enters the appropriate information representing the new runninglist into database 202. Switch control computer 200 issues disconnectcommands similar to the CONNECT VIDEO and CONNECT KEY commands discussedabove which cause the switch 70 to disconnect helper PC 202 from theparticular user port which was connected to the helper PC. The switchcontrol computer then issues the CONNECT VIDEO commands and CONNECT KEYcommands as appropriate to connect the active devices specified in therunning list for a particular user to input and output devices at theuser's location. For example, where the running list input through thehelper PC specifies a video-only link between computer 20A and screen40B (user port 157B) and also specifies a bi-directional link betweenserver 206, the group of devices (monitor 40C, keyboard 42C and mouse44C) associated with receiver 48C and user port 157C, the switch controlcomputer will issue a CONNECT VIDEO command to connect server 20A withuser port 157B and will issue both CONNECT VIDEO and CONNECT KEYcommands to connect server 20C with user port 157C.

[0055] At this juncture, the user is in communication with one or moreserver computers. While the user is interacting with server computers,the user can send a further helper command, referred to herein as anintra-session helper command, by entering alt-break followed by a tabkey. The helper command is handled in the same manner as the startuphelper command discussed above. The intra-session helper commandincludes the attention sequence (Alt-break) followed by depression ofthe TAB key. Once again, the user interface processor associated withthe user port receiving the command responds to the attention sequenceby trapping the following keystroke signals associated with the tab keypress and forwarding a the command to the control card, which sends theintrasession helper command signal to the switch control computer. Inresponse to the intra-session helper command, the switch controlcomputer 200 disconnects the group of I/O devices at the user's locationwhich originated the command from a server and connects the user portassociated with that group of devices to the helper PC in thesubstantially same way as discussed above. However, the switch controlcomputer signals the helper computer that the connection is anintra-session request rather than a startup request. Therefore, thehelper computer does not enter the user identification routine discussedabove. Instead, the helper computer retrieves the identity of the userwho is currently signed on at the user location associated with the userport where the command originated.

[0056] Also, while the user is interacting with the servers, the usercan enter action codes different from the helper codes. The action codesinclude the alt-break attention sequence followed by one or morekeystrokes other than the tab key or enter key. These action codes arecaptured by the processor 152 associated with the user port 157 inexactly the same manner as discussed above with reference to the helpercodes. Here again, the processor passes the keystroke following theattention (alt-break) sequence to the command TDM module of the userinterface card which forwards the keystroke signal to the control card142 of the user interface chassis. The control card passes a signalalong the serial connection 174 giving the overall user port address.The action codes are as follows:

[0057] Alt-break plus up arrow or alt-break plus down arrow: Shift amongservers associated with the particular user port. This causes the switchcontrol computer to disconnect the currently active server from theparticular user port where the action code was entered and to connect aninactive server designated in the running list for the same user port.In this regard, where more than one server is designated for aparticular port in the running set of servers, the database treats theseservers as an ordered but circular stack, so that the first server inthe stack follows after the last server in the stack. For example, ifservers designated as A, B , C and D are in the stack in that order, andserver B is currently active, Alt-Break with up-arrow will make server Aactive, whereas Alt-Break with down-arrow will make server C active. Ifserver D is active, Alt-Break with down arrow will make server A active,whereas Alt-Break with up arrow will make server C active.

[0058] Alt-break plus left arrow or right arrow—This causes the switchcontrol computer to shift the keyboard and mouse connection to adifferent server port among the currently active server ports associatedwith the same user location. For example, assume that server 20 a isconnected to the keyboard and video display of user port 157C, whereasserver 20 b has a video-only connection to user port 157B, both userports being associated with user location 46B. If an alt-break leftarrow sequence is received on user port 157C, the keyboard and mouse ofport 157C would be disconnected from server 20 a and reconnected toserver 20 b. The Alt-break right arrow sequence would be processed inthe same manner, to connect the keyboard to a different server. Thesecommand effectively shifts the effects of the control input to a serverassociated with a different screen. Because these commands are analogousto the change-focus command in a windowed programming environment, theyare referred to herein as change-focus commands.

[0059] Stated another way, for each user location having more than oneuser port, and hence more than one output device, the running set ofservers is maintained as a two-dimensional matrix, with a number ofcolumns equal to the number of user ports and with the stack of serversfor each user port constituting one column. This matrix is establishedby the helper computer when the users selects the set of servers duringoperation of the helper computer. The particular column where thekeyboard is connected is the current column. The up arrow or down arrowsequence moves both the keyboard and video connections up or down thecurrent column, so that the user can pick a new active server forinteraction with the keyboard and video. The left arrow and right arrowsequences moves the keyboard and mouse connection to a different column,and thus select a new current column and shifts the effects or focus ofcontrol inputs applied through the keyboard and mouse into the activeserver in the new column.

[0060] The server computer also takes account of the user's authorizedlevel of access to particular servers, to preclude a user from gainingunauthorized access by use of action commands. The switch controlcomputer may access the database to determine the identity of the userconnected to a particular port, and retrieve that user's access levelfor a particular server denoted by an action command, and grant or denyaccess based on such comparison. Preferably, however, when the helpercomputer establishes the matrix of servers for a particular userlocation and hence for the particular user at that location, the helpercomputer may denote each server as either full-access or video-onlyaccess. The server computer can use these indications in the matrixdefining the running set, and hence need not refer to the data definingthe individual user or to the privileges tables for individual users inthe larger database.

[0061] These action codes allow the user to switch among the variousservers and to move the outputs of the various servers to convenientlocations at his work location without invoking the helper PC. Thesystem thus provides simple commands for performing simple, intuitiveoperations such as shifting among a few servers on the active list orshifting servers around among different display monitors. However, theuser always the option of accessing the helper PC. The user need notrely on his own memory to find appropriate servers. Because all of thehelper codes and action codes are captured at the user interfacechassis, the same cabling which carries the data input by the user cancarry the action codes and helper codes. There is no need to provideseparate command wiring between the various the user locations and thecentral location of the switch.

[0062] Additional users can connect to the system in the same manner.The program running on switch control computer switch server 200maintains separate threads associated with each user location. Thehelper PCs are treated as shared resources by the program running on theswitch control computer or switch server 200. If a user seeks access toa helper PC while all helper PCs currently occupied, the switch controlcomputer will block such access and will display a message to the userindicating that the helper PC is currently unavailable. A separatedevice for generating an apology message and providing the appropriatevideo output with the apology message may be connected to a server port80 to provide this message. This output can be connected to all userlocations which have requested access to the helper but which have notyet been connected to the helper. The switch control computer may act asthe apology server. Alternatively, the apology server may be a computerprogrammed to display educational messages to the users while they arewaiting to connect with a helper computer. The program on the switchcontrol computer will allow numerous users to have video or output onlyaccess to any one server 20, but will only allow one user at a time tohave keyboard or input access to a particular server.

[0063] The administration PC 204 can be used to perform tasks such asupdating the database when the servers 20 or helper computers 202 areinstalled and updating user profiles. The administration computer mayalso be connected into a server port 80 of switch 70 so that a userhaving appropriate privileges can gain access to the administration PCthrough switch 70.

[0064] The RS 232 data communications ports provided on the controlcards can be used for service and maintenance procedures. For example, aterminal or computer connected to these ports can be used to sendcommands to an individual control card to make or break a connection toa particular server port.

[0065] The various elements of switch 70 can be provided with status andfault reporting features. For example, each of the matrix cards isarranged to report its status and to report successful or unsuccessfuloperations, such as successful or unsuccessful connection anddisconnection, to the microprocessor in the control card of the chassis.The various microprocessors are arranged to send error reporting signalsto the switch control computer. The switch control computer may handlemew reports according to a variety of rules depending upon factors suchas the nature of the new error report and previous error reports. Theserules may be explicitly coded rules set by a program, or may incorporatelearned behaviors using techniques commonly referred to as “artificialintelligence”. For example, if a particular matrix card reports afailure to disconnect a particular user's data channel from the data busof the backplane, the switch control computer may repeat the disconnectcommand. If the repeated disconnect command fails after a selectednumber of retries, or if a certain percentage of disconnect or connectcommands fail, the switch control computer may treat the matrix card asdefective and may issue a command to the control card to disable thatmatrix card, as by disconnecting the entire card from the power supply.

[0066] The rules for deciding which action to take in response to whicherror reports will vary with the application and the goals of the systemadministrator. For example, in an environment where security isparamount, and where entry of garbled data due to connection of twokeyboards to one server could pose a substantial risk to the overallmission, the rules may call for disabling a matrix card, or even theentire system, in response to only a few error reports. In aneducational environment where the system is being used to trainoperators in the use of publicly available software, the inconveniencecaused by tolerating a few erroneous connections may be less significantthan the inconvenience caused by shutting down part or all of thesystem. Thus, there is no particular set of error-handling rules whichis best for all applications. Desirably, the switch control programutilizes an event-reporting and event-logging capability, such as thoseincluded in the Windows NT® operating system. The event handler in theoperating system may be arranged to take appropriate actions, such asestablishing a connection to a service facility and sending theappropriate report.

[0067] The system discussed above can be configured for an unlimitednumber of servers. Thus, any desired number of server chassis 72 can beadded to the system. However, each server interface chassis can onlyaccommodate 512 user channels, i.e., 32 user channels per matrix card,and up to 16 matrix cards per server interface chassis. As discussedabove with reference to FIG. 5, the server interface cards 78 areprovided with expansion connectors 92. These expansion connectors can beused to connect additional server interface chassis as illustrated inFIG. 10. A second stack of server interface chassis 72′ is connectedalongside of the first stack of chassis 72. The additional serverinterface chassis are provided with server interface cards 78′ similarto the server interface cards 78 discussed above. The server video anddata channels coupled to each server interface card 78 in a chassis 72is coupled through the expansion port 92 of that card to the inputs 93of a server interface card 78′ in the corresponding chassis 72′ in thesecond stack. The video and data channels are coupled to the backplanesof the chassis 72′ in substantially the same manner as discussed above.The second stack of chassis 72′ can accommodate an additional 512 userchannels, using matrix cards as discussed above. The server interfacecards 78′ of the second stack may have additional expansion ports 92′,so that the server video and data channels can be coupled to stillfurther chassis. Thus, the system can accommodate an essentiallyunlimited number of users.

[0068] Numerous variations and combinations of the features discussedabove can be utilized without departing from the invention as defined bythe claims. For example, the particular keystroke sequences selected todesignate command codes in the embodiment discussed above are arbitrary;other keystroke sequences can be employed. Desirably, the keystrokesequences used to designate command codes are those which do not occurduring normal interaction between the user and a server. Also, theparticular formats for video and data transmission used in the preferredembodiments discussed above are not essential to the invention. Also,the computers may have video output formats other than the VGA formatdiscussed above, and may have different keyboard and mouse output andinput formats. Any of these different formats can be utilized. Further,input and output devices at some or all of the user locations namedinclude devices other than video monitors, keyboards and mice. Forexample, some or all of the user locations may incorporate printers,audio speakers, tactile feedback devices or other computer-controllabledevices such as computer controlled numerical machine tools, “solidmodeling” devices and the like. In each case, the communication linksrouted through the switch would be configured to carry the informationnormally sent by the computer to such devices. Also, the input devicesmay include more complex input devices such as joy sticks or controlswhich simulate the control inputs to a vehicle as, for example,simulated pilots yokes and rudder pedals for flight simulation. Thesedevices may include features such as force feedback, vibration and thelike controlled by output sent from the computer. Here again, thecommunications channels routed through the switch would be configured tocarry the necessary information. In the embodiments discussed above, theswitch acts on electrical signals. However, where the output and inputare routed along optical communications such as fiber opticcommunication channels, the switching device may include appropriatecomponents for switching optical signals. Further, the communicationlinks between the computers and the switch and between the user locationdevices and the switch need not be hard-wired connections. For example,these links can be replaced by appropriate RF or optical communicationslinks. Also, the particular schemes for connection between the switchcontrol computer and the elements of the switch can be varied. Forexample, the RS 422 serial ports of the control cards on the serverinterface chassis can be connected to individual communications ports onthe switch control computer, instead of being connected together in acommon channel as described above. Data communication schemes other thanserial communication channels can be employed.

[0069] As these and other variations and combinations of the featuresdiscussed above can be utilized without departing from the invention asdefined by the claims, the foregoing description of the preferredembodiment should be taken by way of illustration rather than by way oflimitation of the invention as defined by the claims.

What is claimed is:
 1. A method of interfacing a plurality of servercomputers with output and input devices at a plurality of userlocations, said method comprising: (a) receiving input signals sent byinput devices included in sets of input and output devices at userlocations, conveying input signals from said input devices to servercomputers associated with said user locations and conveying outputsignals from such server computers to output devices at said userlocations; (b) detecting one or more predetermined helper codes in suchinput signals and passing said helper codes to a supervisory computersystem (c) operating the supervisory computer system so that thesupervisory computer system actuates a switch in response to said helpercodes to connect the set of input and output devices which sent suchhelper code to a helper computer; (d) running an interactive program forselecting one or more of said server computers in said helper computerso that the helper computer interacts with a user at the user locationwhich sent a helper code; and (e) actuating the switch to connect ordisconnect one or more server computers selected during operation ofsaid interactive program and input and output devices at one or moreuser locations.
 2. A method as claimed in claim 1 wherein said step ofactuating a switch to connect the server computers selected duringoperation of said interactive program is performed so as to connect ordisconnect one or more computers and input and output devices at theuser location which was connected to the helper computer.
 3. A method asclaimed in claim 1 wherein said step of detecting said helper codes isperformed at one or more central locations remote from said userlocations, said helper codes and said input data being conveyed on acommon channel from said user locations to said one or more centrallocations.
 4. A method as claimed in claim 1 further comprising the stepof detecting action codes other than said helper codes in said inputdata and actuating said switch to make or break connections betweenservers and sets of input and output devices at user locations inresponse to said action codes without the use of said interactiveprogram.
 5. A method as claimed in claim 4 wherein said steps ofactuating said switch are performed by operation of a switch computerseparate from said helper computer.
 6. A method as claimed in claim 4further comprising the step of maintaining data defining a running setof servers for each user location, said step of actuating said switchwithout the use of said interactive program including the step ofswitching between servers of the running set for a user location whichsends said action codes.
 7. A method as claimed in claim 4 wherein a setof input and output devices at a particular user location includesmultiple display devices, the method further comprising the step ofmaintaining data defining a running set of servers for each userlocation, said step of actuating said switch without the use of saidinteractive program including the step of switching output of servers ofthe running set for the particular user location to different displaydevices in response to action codes input from such particular location8. A system for interfacing a plurality of server computers with outputand input devices at a plurality of user locations, said systemcomprising: (a) a switch selectively operable to connect said servercomputers with output and input devices at said user locations so thatany said server computers can be associated with a set of output devicesand input devices at any of said user locations and connected to theassociated output and input devices through said switch, whereby userssaid user locations can interact with said server computers; (b) asupervisory computer system, said supervisory computer system beingconnected to said switch so that said supervisory computer system cancontrol operation of said switch, said supervisory computer systemincluding a helper computer, said helper computer being operative to runan interactive program for selecting one or more of said servercomputers for association with a set of input and output devices at auser location, said switch also being selectively operable to associatesaid helper computer with a set of input and output devices at any oneof said user locations so that the so-selected set of output and inputdevices is connected to the helper computer through said switch forinterchange of inputs and outputs through said switch; and (c) coderecognition devices connected to receive the input signals sent by eachsaid input device, said code recognition devices being operative todetect one or more predetermined helper codes in such input signals andto pass said helper codes to said supervisory computer system, saidsupervisory computer system being operative to instruct the switch toconnect the set of input and output devices which sent such helper codeto said helper computer whereby users at said user locations canselectively interact with said helper computer to select servercomputers.
 9. A system as claimed in claim 8 wherein said interactiveprogram includes determination of a user identity based upon inputsignals supplied through the input device connected to said helpercomputer.
 10. A system as claimed in claim 9 wherein said interactiveprogram includes accessing a database associating user identities withaccess rights to servers and controlling access to servers according tothe access rights set forth in said database.
 11. A system as claimed inclaim 9 wherein said interactive program includes displayingrepresentations of available servers on a display device of a setconnected to said helper computer so that the display is different fordifferent users.
 12. A system as claimed in claim 8 wherein saidsupervisory computer system is separate from said server computers. 13.A system as claimed in claim 12 wherein said supervisory computer systemincludes a switch control computer separate from said helper computer,said switch control computer being connected to said switch so that saidswitch control computer can actuate said switch, said helper computerbeing connected to said switch control computer so that said helpercomputer can pass commands to said switch control computer.
 14. A systemas claimed in claim 13 wherein said helper computer and said switchcontrol computer are connected to one another independently of saidswitch.
 15. A system as claimed in claim 13 wherein said coderecognition devices are connected to said switch control computer.
 16. Asystem as claimed in claim 15 wherein said code recognition devices areoperative to recognize one or more action codes included in data inputfrom said input devices and pass said action codes to said switchcontrol computer, said switch control computer being operative to alterconnections between said server computers and said input and outputdevices in response to at least some of said action codes.
 17. A systemas claimed in claim 16 wherein said interactive program run by saidhelper computer defines a running set of servers associated with eachset of input and output devices, and wherein said action codes includechange server codes, said switch computer being operative to actuate theswitch to disconnect a one server of the running set from a particulargroup of input and output devices and connect another server of therunning set to those input and output devices in response to said changeserver codes.
 18. A system as claimed in claim 16 wherein saidinteractive program run by said helper computer defines a running set ofservers associated with each set of input and output devices and whereinat least some sets of input and output devices include a plurality ofdisplay screens and an input device, whereby a plurality of said serversin the running set may be active simultaneously with their outputsdisplayed on said plurality of display screens, and wherein said actioncodes include change focus codes, said switch computer being operativeto actuate the switch to connect the input device to a different one ofthe active servers in response to said change focus codes.
 19. A systemas claimed in claim 15 wherein said switch computer is operative toactuate the switch to connect a set of input and output devices to saidhelper computer in response to said helper codes.
 20. A system asclaimed in claim 19 including a plurality of helper computers asaforesaid, wherein said switch computer actuates the switch to connectone of said plural helper computers to a set of input and output devicesin response to said helper codes.
 21. A system for connecting aplurality of input devices at a plurality of user locations to one ormore server computers, said system including: (a) a plurality of userports for connection to said input devices, said user ports beingdisposed at one or more central locations, each user port being adaptedfor connection to one or more input devices at a user location remotefrom the central location of such user port; (b) a plurality of serverports adapted for connection to server computers; (c) a switch forselectively associating said user ports and said server ports so thatinput signals supplied to each user port by an input device connectedthereto will be conveyed to the associated server port and to a serverconnected to such server port; and (d) one or more code recognitiondevices associated with said user ports and located at said one or morecentral locations, said code recognition devices being operative todetect one or more command codes in input signals supplied through saiduser ports and provide a code output including code data representingsuch command code and address data representing the user port carryingthe input signals in which such command code was detected.
 22. A systemas claimed in claim 21 wherein one or more code recognition devicesincludes a plurality of user interface processors, each said userinterface processor being connected to one or more of said user ports,the system further including at least one control processor and acontrol data channel connecting a set of said user interface processorswith each said control processor so that the particular user interfaceprocessor of the set which sent data to the control processors can beidentified, each said control processor accepting data representing saidcommand codes and assigning said address data based at least in partupon the identity of the user interface processor which sent such data.23. A system as claimed in claim 22 wherein each said user interfaceprocessor is associated with only one said user port.
 24. A system asclaimed in claim 22 wherein said at least one control processor includesa plurality of said control processors each associated with a differentset of user interface processors, each said control processor beingoperative to assign address data based in part upon the identity of thecontrol processor and in part upon the identity of the user interfaceprocessor within the set of user interface processors associated withthat control processor.
 25. A system as claimed in claim 22 wherein saidcontrol data channel includes a time division multiplex data channel.26. A system as claimed in claim 22 wherein each said user interfaceprocessor is operative to delete said command codes from input datasignals supplied to such user interface processor, and to pass saidinput data signals without said command codes into a user data channel,said switch being operative to connect the user data channel of saiduser interface processors with said server computers.
 27. A system asclaimed in claim 26 wherein said server ports and said user portsinclude video connections, said switch being operative to connect thevideo connection of each server port to the video connection of the userport associated with such server port.
 28. A method of operating aplurality of server computers from a plurality of user locationscomprising the steps of: (a) sending input data in a data stream alongwith command codes from input devices at said user locations to userports at one or more central locations; (b) detecting said command codesat said one or more central locations, forwarding said command codes toa supervisory computer and forwarding said input data from each saiduser location through a switch to one or more of said server computers;and (c) actuating said switch in response to at least some of saidcommand codes to change connections between said one or more of saidserver computers and said input devices.
 29. A method as claimed inclaim 28 wherein said step of detecting said command codes includes thestep of detecting said command codes at a plurality of user interfaceprocessors associated with said user ports and associating address datawith each said command code so that such address data depends at leastin part upon the identity of the user interface processor which detectedsuch command code.